import {
    defineConfig,
    loadEnv
} from 'vite'
// import devtools from '@vue/devtools'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
// import vueClickToComponent from 'vue-click-to-component/vite-plugin';
import {
    ElementPlusResolver
} from 'unplugin-vue-components/resolvers'
import {
    resolve,join
} from 'path'

// https://vitejs.dev/config/
/** @type {import('vite').UserConfig} */
export default ({
    mode
}) => {

    // https://devtools.vuejs.org/guide/installation.html#using-dependency-package
    // if (process.env.NODE_ENV === 'development') {
    //     devtools.connect(/* host, port */)
    //   }

    return defineConfig({
        base: "/",
        plugins: [vue(),
            // vueClickToComponent(),
            AutoImport({
                resolvers: [ElementPlusResolver()],
            }),
            Components({
                resolvers: [ElementPlusResolver()],
            })
        ],
        resolve: {
            alias: {
                '@': resolve(__dirname, 'src'),
                "@components": join(__dirname, "./src/components"),
            }
        },
        build: {
            outDir: 'dist', // 打包文件的输出目录
            assetsDir: 'static', // 静态文件的存放目录
            sourcemap: true
        },
        // 代理配置
        server: {
            https: false,
            open: false, // 是否自动打开浏览器
            host: '0.0.0.0',
            port: 5173, //启动端口
            hmr: { // https://vitejs.cn/config/#server-hmr
                host: 'localhost',
                port: 5173
            },
            proxy: {
                '/api': { // 配置需要代理的路径 --> 这里的意思是代理http://localhost:80/api/后的所有路由
                    target: loadEnv(mode, process.cwd()).VITE_PROXY_TARGET, // 目标地址 --> 服务器地址
                    // target: 'http://file.cupb.top/', // 目标地址 --> 服务器地址
                    // target: 'http://localhost:8888', // 目标地址 --> 服务器地址
                    changeOrigin: true, // 允许跨域
                    ws: true, // 允许websocket代理
                    // 重写路径 --> 作用与vue配置pathRewrite作用相同
                    rewrite: (path) => path.replace(/^\/api/, "")
                }
            },
        },

    })
}
